// 封装分类数据业务相关代码

// 引入用于二级路由的请求
import { getCategoryAPI } from "@/apis/category"

// 引入ref
import { ref, onMounted } from "vue"
// 引入导航守卫用于解决路由缓存
import { onBeforeRouteUpdate } from "vue-router";

// 引入useRoute用于获取参数
import { useRoute } from "vue-router";

// 导出封装的业务逻辑
export function useCategory() {
    // 定义响应数据
    const categoryData = ref({})
    // 调用useRoute获取route实例对象
    const route = useRoute()
    // 获取数据
    // id=route.params.id设置默认值,接收参数使其可以在路由变化后重新获取数据
    const getCategory = async (id = route.params.id) => {
        const res = await getCategoryAPI(id)
        categoryData.value = res.result
    }
    // 路由参数变化时将分类接口数据重新发送
    onBeforeRouteUpdate(async (to) => {
        // 使用变化后的路由参数请求最新的分类数据
        // 传递参数重新获取数据
        await getCategory(to.params.id)
    })
    // 调用方法
    onMounted(() => {
        // 获取分类
        getCategory()
    })

    // 暴露内部响应数据和方法
    return {
        categoryData
    }
}
